package cn.xy.dao;

import cn.xy.pojo.Student;

import java.util.List;

public interface StudentMapper {
    /**
     *  查询所有学生,已经所对应的老师,多对一
     *  方式一：子查询，按照查询嵌套处理
     * @return
     */
    /**
     *正常的SQL语句，  SELECT * FROM `student`;
     * 返回结果为resultMap="StudentTeacher"
     * 映射结果集:
     * <resultMap id="StudentTeacher" type="student">
            <result property="id" column="id"/>
            <result property="name" column="name"/>
            property：实体类字段名。column：传给下面要执行的sql语句，可以理解为参数。javaType：需要返回的类型。select：接下来对应的sql语句
            <association property="teacher" column="tid" javaType="teacher" select="getTeacher"/>
     </resultMap>

     <select id="getTeacher" resultType="teacher">
         SELECT * FROM `teacher` where id = #{id};
     </select>
     *
     */
    List<Student> getStudentList();

    /**
     *  查询所有学生,已经所对应的老师,多对一
     *  方式二：按照结果嵌套处理
     * @return
     */

    /**
     *  按照结果嵌套处理
     *  SQL语句为：select s.id,s.name,t.id tid,t.name tname from `student` s,`teacher` t where s.tid = t.id;
     *  虽然SQL语句看起来比较麻烦，但是结果集映射起来比较容易理解
     *  返回结果为resultMap="StudentTeacher2"
     *  结果集映射：
     <resultMap id="StudentTeacher2" type="student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        property：实体类的字段名。property：他的java类型，接下来只是简单数据的映射
        <association property="teacher" javaType="teacher">
            <result property="id" column="tid"/>
            <result property="name" column="tname"/>
        </association>
     </resultMap>
     */
    List<Student> getStudentList2();
}
